class A:
    # 类变量 定义的时候需要给一个初始值
    class_param = 100

    def __init__(self):
        self.param = 20
        # pri_param表示私有成员 只能在类内部访问
        self.__pri_param = 200

    # 如果方法和成员属性重名，该方法无效，只有成员属性有效
    def param1(self):
        print("1")

    # 类方法
    @classmethod
    def class_method(cls):
        cls.class_param = 100

    # 静态方法 不涉及对象和类的联系，相当于在类中定义了一个普通的函数 调用依旧通过类名/函数名调用
    @staticmethod
    def static_method():
        print("222")


if __name__ == '__main__':
    a1 = A()
    a2 = A()
    # 类如果想要调用成员方法，可以在传参的时候给一个对象，python中万物皆对象，所以可以传入任何值
    A.class_param = 2
    print(a2.class_param)
    a1.static_method()
